#include "cPonto.h"
#include "default.h"
#include <math.h>

Ponto::Ponto(int x, int y){
    this->posX = x;
    this->posY = y;
    this->marcado = false;
}

Ponto::Ponto(){
}

Ponto::~Ponto(){
}

void Ponto::setX(int x){
    if (!((x < POINTSIZE) || (x > WIDTH-POINTSIZE))){
        this->posX = x;
    }
}

void Ponto::setY(int y){
    if (!((y < POINTSIZE) || (y > HEIGHT-POINTSIZE) || y < (100 + POINTSIZE))){
        this->posY = y;
    }
}

void Ponto::setX(double x){
    if (!((x < POINTSIZE) || (x > WIDTH-POINTSIZE))){
        this->posX = x;
    }
}

void Ponto::setY(double y){
    if (!((y < POINTSIZE) || (y > HEIGHT-POINTSIZE) || y < (100 + POINTSIZE))){
        this->posY = y;
    }
}

void Ponto::setPonto(int x, int y){
    this->posX = x;
    this->posY = y;
}

int Ponto::getX(){
    return static_cast<int>(ceil(this->posX));
}

int Ponto::getY(){
    return static_cast<int>(ceil(this->posY));
}

double Ponto::getXd(){
    return this->posX;
}

double Ponto::getYd(){
    return this->posY;
}

bool Ponto::operator==(Ponto * p) {
    if ((this->posX == p->posX) && (this->posY == p->posY)) {
        return true;
    } else {
        return false;
    }
}

void Ponto::inverteMarcado(){
    this->marcado = !this->marcado;
}

void Ponto::setMarcado(bool m){
    this->marcado = m;
}

bool Ponto::isMarcado(){
    return this->marcado;
}

int Ponto::calcDistancia(Ponto * p){
    return sqrt(pow(p->getX()-this->getX(),2) + pow(p->getY()-this->getY(),2));
}
